package co.com.bean.asignatura;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.Stateless;

import co.com.smart.maestro.infraestructure.dto.AsignaturaDTO;
import co.com.smart.maestro.infraestructure.dto.ResponseJson;
import co.com.smart.mapper.Mapper;
import co.com.smart.persistence.entity.AsignaturaFacadeLocal;
import co.com.smart.persistence.entity.dto.SmartAsignatura;
import co.com.smart.session.DelegateContextEJB;
import co.com.smart.utilidades.Constantes;

/**
 * Session Bean implementation class AsignaturaBean
 */
//@Stateless(mappedName = "ejb/AsignaturaBean")
public class AsignaturaBean /*implements AsignaturaBeanLocal*/ {
	/*private AsignaturaFacadeLocal facade;
	
	public AsignaturaBean(){
		facade = DelegateContextEJB.getAsignaturaFacadeLocal();
	}
	
	

	@Override
	public ResponseJson insertarAsignatura(AsignaturaDTO asignaturaDTO) {
		ResponseJson response = new ResponseJson(); 
		try {
			facade.create(Mapper.mapperDtoToSmartAsignatura(asignaturaDTO));
			response.setCodigo(Constantes.StatusResponse.OK.getStatus());
			response.setMensaje(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura almacenada.");
			response.setMensajeInterno(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura almacenada.");
		} catch (Throwable e) {
			response.setCodigo(Constantes.StatusResponse.ERROR.getStatus());
			response.setMensaje(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+ "No fue posible almacenar la asignatura.");
			response.setMensajeInterno(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+e.getMessage());
		}
		return response ;
	}
	
	@Override
	public List<AsignaturaDTO> consultarAllAsignatura(){
		List<AsignaturaDTO> asignatura = new ArrayList<AsignaturaDTO>();
		for (SmartAsignatura entity : facade.findAll()) {
			if(entity.getSmfhretiro() == null){
				asignatura.add(Mapper.mapperSmartAsignaturaToDto(entity));
			}
		}
		return asignatura;
	}

	@Override
	public AsignaturaDTO consultarAsignaturaId(AsignaturaDTO asignaturaDTO) {
		AsignaturaDTO asignatura = new AsignaturaDTO();	
		SmartAsignatura entity  = facade.find(asignaturaDTO.getScasignatura());
		if(entity != null && entity.getSmfhretiro() == null){
			asignatura = Mapper.mapperSmartAsignaturaToDto(entity);
		}
		return asignatura;
	}

	@Override
	public ResponseJson editAsignatura(AsignaturaDTO asignaturaDTO) {
		ResponseJson response = new ResponseJson(); 
		try {
			asignaturaDTO.setFhmodificacion(new Date());
			facade.edit(Mapper.mapperDtoToSmartAsignatura(asignaturaDTO));
			response.setCodigo(Constantes.StatusResponse.OK.getStatus());
			response.setMensaje(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura editada.");
			response.setMensajeInterno(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura editada.");
		} catch (Throwable e) {
			response.setCodigo(Constantes.StatusResponse.ERROR.getStatus());
			response.setMensaje(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+ "No fue posible editar la asignatura.");
			response.setMensajeInterno(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+e.getMessage());
		}
		return response ;
	}

	@Override
	public ResponseJson removeAsignatura(AsignaturaDTO asignaturaDTO,  boolean logic) {
		ResponseJson response = new ResponseJson(); 
		if(logic){
			try {
				asignaturaDTO.setFhretiro(new Date());
				asignaturaDTO.setFhmodificacion(new Date());
				facade.edit(Mapper.mapperDtoToSmartAsignatura(asignaturaDTO));
				response.setCodigo(Constantes.StatusResponse.OK.getStatus());
				response.setMensaje(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura inactivado");
				response.setMensajeInterno(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura inactivado.");
			} catch (Throwable e) {
				response.setCodigo(Constantes.StatusResponse.ERROR.getStatus());
				response.setMensaje(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+ "No fue posible inactivar la asignatura.");
				response.setMensajeInterno(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+e.getMessage());
			}
		}else{
			try {
				facade.remove(Mapper.mapperDtoToSmartAsignatura(asignaturaDTO));
				response.setCodigo(Constantes.StatusResponse.OK.getStatus());
				response.setMensaje(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura eliminada");
				response.setMensajeInterno(Constantes.MensajeResponse.MSJ_OK.getMensajeStatuss()+ "Asignatura eliminada.");
			} catch (Throwable e) {
				response.setCodigo(Constantes.StatusResponse.ERROR.getStatus());
				response.setMensaje(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+ "No fue posible eliminar la asignatura.");
				response.setMensajeInterno(Constantes.MensajeResponse.MSJ_ERROR.getMensajeStatuss()+e.getMessage());
			}
		}
		return response ;
	}*/
}
